package com.interface_;

/**
 * @Author 小闽
 * @Date 2024/9/14 11:28
 * @PackageName: com.interface_
 * @ClassName: ExtendVsInterface
 * @Description: 继承和接口
 * @Version 1.0
 */
public class ExtendVsInterface {
    public static void main(String[] args) {
        // 实例化一个LittleMonkey对象
        LittleMonkey wukong = new LittleMonkey("悟空");
        wukong.climbing();
        wukong.fly();
        wukong.swimming();
    }
}

//猴子类
class Monkey{
    private String name;

    /**
     * 构造方法
     * @param name
     */
    public Monkey(String name) {
        this.name = name;
    }
    // 爬树的方法
    public void climbing(){
        System.out.println(name + "会爬树...");
    }
    public String  getName(){
        return name;
    }
}

// 鸟类接口
interface Birdable{
    void fly();
}
// 鱼类接口
interface Fishable{
    void swimming();
}

class LittleMonkey extends Monkey implements Birdable,Fishable{

    /**
     * 构造方法
     *
     * @param name
     */
    public LittleMonkey(String name) {
        super(name);
    }
    // 在这里，猴子还想去除了有爬树的功能以外还要去学习会飞和会游泳的功能。
    // 1. 去定义一个鸟类的接口，并在接口中定义会飞的抽象方法。
    // 2. 去定义一个鱼类的接口，并在接口中定义会游泳的抽象方法。
    // 3. 让本类分别去实现接口中的抽象方法。
    @Override
    public void fly() {
        System.out.println(getName() +"通过学习学会了飞翔...");
    }

    @Override
    public void swimming() {
        System.out.println(getName() + "通过学习学会了游泳...");
    }


}

